(defun flpf (n)
	(if (= (mod n 2) 0)
		(return-from flpf (max 2 (flpf (/ n 2)))))

 	(let ((iter 3))
	(loop 
		(if (> iter (sqrt n))
			(return))
		(if (= (mod n iter) 0)
			(return))
		(setq iter (+ iter 2)))

	(if (> iter (sqrt n))
		n
		(max (flpf (/ n iter)) iter))))
